package com.c2b.algorithm.newcoder.heapStackQueue;

import java.util.Stack;

/**
 * <a href="https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=295&tqId=23281&ru=%2Fpractice%2F37548e94a270412c8b9fb85643c8ccc2&qru=%2Fta%2Fformat-top101%2Fquestion-ranking&sourceUrl=%2Fexam%2Foj">用两个栈实现队列</a>
 * <p>用两个栈来实现一个队列，使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法，即保证pop操作时队列内已有元素。</p>
 * <p>
 * 数据范围：n≤1000<br>
 * 要求：存储n个元素的空间复杂度为O(n) ，插入与删除的时间复杂度都是O(1)</p>
 *
 * @author c2b
 * @since 2023/3/14 15:17
 */
public class BM0042QueueThroughTwoStacks_S {

    Stack<Integer> stack1 = new Stack<>();
    Stack<Integer> stack2 = new Stack<>();

    public void push(int node) {
        stack1.push(node);
    }

    public int pop() {
        if (!stack2.empty()) {
            return stack2.pop();
        }
        while (!stack1.empty()) {
            stack2.push(stack1.pop());
        }
        return stack2.pop();
    }
}
